大家好,鐵人賽第七天!
經過前一天的理論洗禮,我們已經對 AI Agent 的「思考-行動」循環有了深刻的理解。今天,我們不再紙上談兵,而是要親手在 n8n 中打造出第一個能被 AI Agent 呼叫的「工具 (Tool)」——一個 MCP 計算機!
這將是我們首次將 MCP 的概念應用到實際工作流中。讓我們開始吧!
我們最終會建立兩個 n8n 工作流:
tool
。首先,我們來建立這個能執行計算的後端「服務」。
Tool
觸發器在 n8n 主畫面上,點擊左上角的 +
號,選擇 New Workflow
,建立一個全新的工作流。
將預設的 Start
節點刪除。
點擊 Add first node
,在搜尋框中輸入 MCP Server Trigger
,選擇 MCP Server Trigger
節點作為觸發器。
再來新增 tools 選擇 Calculator 工具,如下圖
設定 MCP Server Trigger ,如下圖
這邊就是 Test URL 是在畫面中按下測試才可以被呼叫到的, Production URL 是在主畫面中選擇上方的 Active 就可以一直被呼叫了!
Calculator Tool
。Inactive
切換為 Active。只有啟用的工作流才能被其他 AI Agent 呼叫!
至此,我們的「計算機工具」已經準備就緒,就像一個微型的 MCP Server 服務,隨時待命。
現在,我們來建立一個主工作流,讓 AI Agent 使用我們剛剛建立的工具。
When chat message received
觸發器再次建立一個全新的 n8n 工作流。
將預設的 Start
節點刪除。
點擊 Add first node
,在搜尋框中輸入 chat message
,選擇 When chat message received
節點作為觸發器。
如 Image 1 所示,這是我們主流程的起點。
AI Agent
節點When chat message received
節點後面,點擊 +
號,新增一個 AI Agent 節點。AI Agent
節點點擊 AI Agent
節點,在右側的設定面板中。
Language Model (LLM): 點擊 Model
欄位下的 Add Credential
,配置你已有的 AI 模型憑證,例如 Google Gemini Chat Model
。
小提示: 如果你還沒有設定過 AI 模型,你可以選擇
Google Gemini Chat Model
,然後按照指示新增一個 Google Gemini 的 API Key 憑證。
Tools (工具): 這是最關鍵的部分!
Tools
欄位,點擊 Add Tool
。Workflow
的下拉選單中,你會找到我們剛剛建立並啟用的 MCP Client
工作流。選擇它!如下圖MCP Demo
。Inactive
切換為 Active。一切都準備就緒!
在 MCP Demo
主工作流的畫布下方,你會看到一個紅色的 Open chat
按鈕。點擊它。
一個聊天視窗會彈出。現在,請輸入你的指令:
100 + 100 = ?
或者:
幫我計算一下 5 乘以 8 再加上 12 等於多少?
甚至你可以試試:
如果我今天賺了 150 塊,然後明天又賺了 200 塊,請問我總共賺了多少錢?
你會看到 AI Agent 不僅僅回答問題,它在背景會:
Calculator Tool
。AI Agent 成功使用計算機工具並回覆。
當我們向 AI Agent 提出「100 + 100 = ?」這個問題,並讓它使用我們的計算機工具時,n8n 的執行日誌會鉅細靡遺地記錄下 AI Agent 每一個決策和動作。這些日誌是理解 AI Agent 內部如何「思考」和「行動」的黃金線索。
讓我們從 AI Agent 節點下的不同子步驟開始,一步步解讀整個流程。
Google Gemini Chat Model
執行)首先,當使用者在聊天視窗中輸入 100 + 100 = ?
時,這個指令會傳遞給 AI Agent
節點。AI Agent
的第一個子步驟就是啟用其核心的語言模型來進行初步的思考。
日誌位置: AI Agent
節點下的第一個 Google Gemini Chat Model
。
Input (輸入 - Image 3):
System: choice right tool based on user question:
Human: 100 + 100 = ?
Output (輸出 - Image 1 的右側 OUTPUT
):
functionCall
的指令,這是 LLM 告訴 n8n:「我決定要呼叫這個工具」的方式。
{
"response": {
"generations": [
{
"text": "", // 可能沒有直接的文字回覆
"tool_calls": [ // 這裡就是 LLM 的「決策」
{
"function": {
"name": "calculator", // 決定呼叫名為 "calculator" 的工具
"args": {
"expression": "100 + 100" // 傳遞 "100 + 100" 作為 expression 參數
}
}
}
],
"finishReason": "STOP"
}
],
"token_usage": { /* ... */ }
}
}
100 + 100
提取出來,作為 calculator
工具的 expression
參數。MCP Client
執行)一旦第一個 Gemini 模型決定要呼叫工具,AI Agent
節點就會啟用 MCP Client
這個子步驟來執行這個決策。
日誌位置: AI Agent
節點下的 MCP Client
。
Input (輸入 - Image 4 的左側 INPUT
):
MCP Client
的輸入,就是上一步 Gemini 模型產生的 tool_calls
決策。它會清楚地指示 MCP Client
:
query
: 原始問題 100 + 100 = ?
tool.name
: calculator
(要呼叫的工具名稱)tool.input
: 100 + 100
(傳遞給工具的參數)tool.description
: (工具的描述,幫助 Client 理解其功能)Output (輸出 - Image 4 的右側 OUTPUT
):
MCP Client
成功呼叫了我們的 Calculator Tool
工作流,並等待其回傳結果。Calculator Tool
計算完成並回傳 200
,MCP Client
會將這個結果捕獲並作為自己的輸出:
{
"response": [
{
"type": "text",
"text": "200" // 計算機工具回傳的最終結果
}
]
}
MCP Client
充當了主流程 (Host) 與工具服務 (Server) 之間的橋樑。Google Gemini Chat Model
執行)MCP Client
成功取得工具的執行結果後,這個結果會再次回傳給 AI Agent
,讓它的大腦(第二個 Google Gemini Chat Model
)進行最終的處理。
日誌位置: AI Agent
節點下的第二個 Google Gemini Chat Model
。
Input (輸入 - Image 5 的左側 INPUT
):
System: choice right tool based on user question:
Human: 100 + 100 = ?
AI: model, [{"functionCall":{"name":"calculator","args":{"input":"100 + 100"}}}]
Tool: {"type":"text","text":"200"} // 這裡就是 MCP Client 傳回的工具結果
calculator
關於 100 + 100
,它回答了 200
。」Output (輸出 - Image 2 的右側 OUTPUT
/ Image 5 的右側 OUTPUT
):
200
,判斷這就是問題的最終答案,並將其作為最終的文字回覆輸出:
{
"response": {
"generations": [
{
"text": "200", // 最終呈現給使用者的答案
"finishReason": "STOP"
}
],
"token_usage": { /* ... */ }
}
}
200
就是最終顯示在聊天視窗中的答案。這三張 log 截圖,清晰地為我們揭示了 AI Agent 如何透過一個動態的、多步驟的「思考 (LLM) → 行動 (MCP Client/Tools) → 觀察 (結果) → 再次思考 (LLM) → 輸出答案」的循環模式來解決問題。
這不再是單純的文字生成,而是一個具備「問題解決能力」的數位代理人,它懂得:
MCP Client
實際呼叫外部服務。理解了這些日誌背後的邏輯,你就能更深入地掌握 AI Agent 的強大之處,以及 MCP 在其中扮演的關鍵「連接」角色。
今天我們完成了一項非常重要的里程碑:
AI Agent
節點,並掛載這個工具。
這正是 MCP 協定的力量所在——它允許 AI Agent 透過標準化的方式,發現並運用各種外部服務所提供的「能力」。你所建立的 Calculator Tool
,就是一個實實在在的 MCP Server。
明天,我們將把這個概念擴展到更複雜的場景:串接外部天氣 API,打造一個能獲取即時天氣資訊的工具!